package com.paic.mhis.hcpms.agreement.protocol.biz.service;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;
import com.paic.pafa.app.biz.service.BusinessServiceException;

/**
 * Description: 协议管理模块接口
 * 
 * @param args
 * 
 *            Modification History: Date Version Author Description
 *            ------------------------------------------------------------------
 *            2014-5-4 hcpms_j2ee EX-LUORONG001 创建
 */

public interface AgreementService {

	/**
	 * 协议信息新增
	 * 
	 * @param transferJson
	 * @param currentUser
	 * @return
	 */
	public Map<String, Object> add(JSONObject transferJson, String currentUser)
			throws BusinessServiceException;

	/**
	 * 文件信息新增
	 * 
	 * @param transferJson
	 * @param currentUser
	 * @return
	 */
	public Map<String, Object> addImage(JSONObject transferJson,
			String username, String fileName, long fileSizeTemp)
			throws BusinessServiceException;

	/**
	 * 已维护协议信息查询(分页)
	 * 
	 * @param queryJson
	 * @return
	 */
	public Map<String, Object> queryPage(int pageSize, int page,
			Map<String, Object> params) throws BusinessServiceException;

	/**
	 * 已维护协议信息详情
	 * 
	 * @param transferNo
	 * @return
	 */
	public Map<String, Object> get(String id) throws BusinessServiceException;

	/**
	 * 获取文件
	 * 
	 * @param transferNo
	 * @return
	 */
	public Map<String, Object> getImageList(String id)
			throws BusinessServiceException;

	/**
	 * 协议信息修改
	 * 
	 * @param transferJson
	 * @param currentUser
	 * @return
	 */
	public Map<String, Object> update(JSONObject transferJson,
			String currentUser) throws BusinessServiceException;

	/**
	 * 协议信息修改状态
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> delete(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 文件信息修改状态
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> deleteFile(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 根据支付方式查询
	 * 
	 * @param transferJson
	 * @return
	 */
	/*
	 * public Map<String, Object> getModePay(JSONObject transferJson) throws
	 * BusinessServiceException;
	 */

	/**
	 * 按总额付费
	 * 
	 * @param transferId
	 * @return
	 */
	public Map<String, Object> queryGlobalBudget(String agreementId)
			throws BusinessServiceException;

	/**
	 * 按总额付费详情
	 * 
	 * @param transferId
	 * @return
	 */
	public Map<String, Object> getGlobalBudget(String id)
			throws BusinessServiceException;

	/**
	 * 按总额付费新增
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> addGlobalBudget(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 按总额付费修改
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> updateGlobalBudget(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 按总额付费修改状态
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> deleteGlobalBudget(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 按人头付费
	 * 
	 * @param transferId
	 * @return
	 */
	public Map<String, Object> queryCapitationPay(String agreementId)
			throws BusinessServiceException;

	/**
	 * 按人头付费详情
	 * 
	 * @param transferId
	 * @return
	 */
	public Map<String, Object> getCapitationPay(String id)
			throws BusinessServiceException;

	/**
	 * 按人头付费新增
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> addCapitationPay(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 按人头付费修改
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> updateCapitationPay(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 按人头付费修改状态
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> deleteCapitationPay(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 按项目付费详情(分页)
	 * 
	 * @param transferId
	 * @return
	 */
	public Map<String, Object> queryPageServiceItemPay(String pageSize,
			String page, String agreementId) throws BusinessServiceException;

	/**
	 * 按项目付费详情
	 * 
	 * @param transferId
	 * @return
	 */
	public Map<String, Object> getServiceItemPay(String id)
			throws BusinessServiceException;

	/**
	 * 按项目付费新增
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> addServiceItemPay(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 按项目付费修改
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> updateServiceItemPay(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 按项目付费修改状态
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> deleteServiceItemPay(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 按病种付费详情(分页)
	 * 
	 * @param transferId
	 * @return
	 */
	public Map<String, Object> queryPageDiseasePay(String pageSize,
			String page, String agreementId) throws BusinessServiceException;

	/**
	 * 按病种付费详情
	 * 
	 * @param transferId
	 * @return
	 */
	public Map<String, Object> getDiseasePay(String id)
			throws BusinessServiceException;

	/**
	 * 按病种付费新增
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> addDiseasePay(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 按病种付费修改
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> updateDiseasePay(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 按病种付费修改状态
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> deleteDiseasePay(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 预授权方案详情(分页)
	 * 
	 * @param itemName
	 * 
	 * @param transferId
	 * @return
	 */
	public Map<String, Object> queryPagePreAuthorization(String pageSize,
			String page, String agreementId, String itemType, String itemCode,
			String itemName) throws BusinessServiceException;

	/**
	 * 预授权方案详情
	 * 
	 * @param transferId
	 * @return
	 */
	public Map<String, Object> getPreAuthorization(String id)
			throws BusinessServiceException;

	/**
	 * 预授权方案新增
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> addPreAuthorization(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 预授权方案修改
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> updatePreAuthorization(JSONObject transferJson)
			throws BusinessServiceException;

	/**
	 * 预授权方案修改状态
	 * 
	 * @param transferJson
	 * @return
	 */
	public Map<String, Object> deletePreAuthorization(JSONObject transferJson)
			throws BusinessServiceException;

	public List<Map<String, String>> getModePay();

}
